package com.trf.member.controller;

import com.trf.member.base.Result;
import com.trf.member.entity.Goods;
import com.trf.member.req.GoodsREQ;
import com.trf.member.service.IGoodsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  商品信息表 前端控制器
 * </p>
 *
 * @author 小小唐
 * @since 2023-03-04
 */
@RestController
@RequestMapping("/goods")
public class GoodsController {

    Logger logger = LoggerFactory.getLogger(this.getClass());

     //注入商品信息数据
    @Autowired
    private IGoodsService goodsService;

    /**
     * 分页条件查询商品列表
     * @param page 页码
     * @param size 每页记录数据
     * @param req  商品详情
     * @return
     */
    @PostMapping("/list/search/{page}/{size}")
    public Result search(@PathVariable("page") Long page,
                         @PathVariable("size") Long size,
                         @RequestBody(required = false) GoodsREQ req){
        this.logger.info("分页查询商品列表：page={},size={}", page, size);
        return goodsService.search(page,size,req);
    }

    /**
     * 新增商品
     * @param goods 商品详情
     * @return
     */
    @PostMapping
    public Result add(@RequestBody Goods goods){
        boolean b = goodsService.save(goods);
        if (b){
            return Result.ok();
        }
        return Result.error("新增商品信息失败");
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable("id") int id){
        boolean b = goodsService.removeById(id);
        if (b){
            return Result.ok();
        }
        return Result.error("删除商品信息失败");
    }

    /**
     * 通过商品id查询商品详情
     * @param id 商品id
     * @return
     */
    @GetMapping("/{id}")
    public Result get(@PathVariable("id") int id){
        return goodsService.findById(id);
    }

    /**
     * 修改商品
     * @param id 商品id
     * @param goods 商品详情
     * @return
     */
    @PutMapping("/{id}")
    public Result update(@PathVariable("id") int id,
                         @RequestBody Goods goods){
        return goodsService.update(id,goods);
    }
}
